package com.szrt.java.day20170113.ch04;

import static java.lang.annotation.ElementType.CONSTRUCTOR;
import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.ElementType.LOCAL_VARIABLE;
import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.ElementType.PARAMETER;
import static java.lang.annotation.ElementType.TYPE;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 源注解： 注解的注解  限制修改注解的注解
 * @Target 表示我这个注解可以用在哪里
 * TYPE 类
 * FIELD 属性
 * METHOD 方法
 * 
 * @Retention  生命周期
 * SOURCE   在.java文件中可以看到注解。但是在生成的.class文件 编译器会自动删除这个注解。此时使用反射拿不到注解
 * CLASS    在.java文件中有  .class文件中也有   运行的时候没有。 反射拿不到
 * RUNTIME  在.java文件中有  .class文件中也有   运行的时候有。    反射可以拿到
 * @author zsrt
 * 
 * @Documented 在生成文档 .chm格式的文档  是否让api使用者知道某个方法上面有注解
 * 
 * @Inherited 是否可以被继承
 * 
 * 程度： 勉强看懂
 *	
 */
@Target({TYPE,FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE,ElementType.PACKAGE})
@Retention(RetentionPolicy.RUNTIME)
@Documented  
@Inherited
public @interface ScottSuppressWarning {

	String value() default "";
	
	int[] abc()  default 0;
	
	
	boolean xxoo() default false;
}
